import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from "@/router/routes";
Vue.use(VueRouter)
const originPush = VueRouter.prototype.push  //把原本的push函数地址存起来，防止后面要用
const originReplace= VueRouter.prototype.replace  //把原本的push函数地址存起来，防止后面要用

//把今后使用的push改成我们自己定义的函数
VueRouter.prototype.push = function(location,resolved,rejected){
  if(resolved === undefined && rejected === undefined){
    return originPush.call(this,location).catch(() => {})
  }else{
    return originPush.call(this,location,resolved,rejected)
  }
}
VueRouter.prototype.replace = function(location,resolved,rejected){
  if(resolved === undefined && rejected === undefined){
    return originReplace.call(this,location).catch(() => {})
  }else{
    return originReplace.call(this,location,resolved,rejected)
  }
}
const  router= new VueRouter({
  routes,
  mode:'history',//还有hash模式,会让url带#
})
// router.beforeEach(async(to, from, next) => {
//   // ...
//   // to 目的地的路由对象
//   // from  是发起的路由对象
//   // next  是回调函数
//   // 不带参数  代表无条件放行
//   // 带了false 代表原地待着，啥也不干
//   // 带了跳转的路径字符串或者对象，代表强制改变跳转的地方  next('/home')
//
//
//   //获取用户的token和用户的信息
//   let token =  store.state.user.token
//   let userInfo =  store.state.user.userInfo
//   // 判断token在不在
//   if(token){
//     //如果token存在，代表用户登录过，但是用户信息在不在不知道
//     if(to.path === '/login'){
//       //登录过又去登录，不应该登录，强制跳转到首页
//       next('/')
//     }else{
//       //登陆过，也不是重复去登录，而是去其它的页面
//       //判断用户信息有没有
//       if(userInfo.name){
//         //代表用户登录了 也获取到用户信息了
//         next()
//       }else{
//         //代表用户登录了，但是没获取用户信息，此时需要获取用户信息
//         try {
//           //获取用户信息成功
//           await store.dispatch('getUserInfo')
//           next()
//         } catch (error) {
//           //获取用户信息失败 一般都是token过期
//           //清空原来的token，重新去登录
//           store.dispatch('resetToken') //清空原来的token
//           next('/login')
//         }
//       }
//     }
//   }else{
//     //代表token不存在
//     // next()
//     let targetPath = to.path
//     if(targetPath.indexOf('/trade')===0 || targetPath.startsWith('/pay') || targetPath.startsWith('/center')){
//       next('/login?redirect='+targetPath)
//     }else{
//       next()
//     }
//   }
// })
export default router
